package day240110

import "fmt"

// 数组，内存中 一段固定长度的连续空间
// 声明数组后，数组就会在内存中开辟一块连续空间，每个值称为 元素
// 元素值为类型对应的默认值，例如int类型默认值为0，string 类型默认值为空字符串
func M数组和地址() {
	//声明方式
	var arr1 = [3]int{1, 2, 3} //完整写法
	arr2 := [3]int{1, 2, 3}    //短变量写法
	arr3 := [5]int{1, 2, 3}    //空位置 补 默认值 0
	arr4 := [...]int{1, 2, 3}  //不定长度

	fmt.Println("情况1：", arr1, arr2, arr3, arr4)                     //[1 2 3] [1 2 3] [1 2 3 0 0] [1 2 3]
	fmt.Println("情况2：", len(arr1), len(arr2), len(arr3), len(arr4)) //情况2： 3 3 5 3

	//下标，也叫脚标 从0开始，到len-1结束
	arr1[1] = 6
	fmt.Println("情况3：", arr1) //[1 6 3]

	arr5 := arr1 //开辟新内存地址
	//arr5 := arr1 即使用了=，新数组即使长度相同，内容相同，  地址还是不同
	fmt.Printf("情况4： %p %p", &arr1, &arr5) //0x9896080 0x9896110

	//我改arr5 , arr1不会变
	arr5[1] = 0
	fmt.Println("情况5：", arr1, arr5) //[1 6 3] [1 0 3]
}
